/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEjemplar;
import AccesoDatos.Persistencia.Manager.ManagerInformes;
import GUI.Bibliotecario.AdminEjemplares.PanelActualizarEjemplar;
import LogicaNegocio.Biblioteca.Ejemplar;
import LogicaNegocio.Validacion.VBiblioteca;
import javax.swing.JOptionPane;

/**
 * Esta clase en java se encarga de controlar
 * los eventos generados por la interfaz grafica
 * registro de ejemplares.
 *
 *
 * @author sebaxtian
 * Archivo: ControlActualizarEjemplar.java
 * @version 1.0
 * Fecha: sáb may 22 14:25:07 COT 2010
 */


public class ControlActualizarEjemplar {

    //Atributos de clase
    private PanelActualizarEjemplar panelActualizarEjemplar;
    private ManagerInformes gestorInformes;
    private ManagerEjemplar gestorEjemplar;
    private Ejemplar ejemplar;

    public ControlActualizarEjemplar(PanelActualizarEjemplar panelActualizarEjemplar) {
        this.panelActualizarEjemplar = panelActualizarEjemplar;
        gestorEjemplar = new ManagerEjemplar();
        gestorInformes = new ManagerInformes();
        ejemplar = null;
    }

    public void actualizar() {
        if(ejemplar != null){
            try {
                Long isbn = -1L;
                int numeroCajon = -1;
                int numeroEstante = -1;
                int numeroPasillo = -1;
                int numeroSala = -1;
                boolean disponible = false;
                try {
                    isbn = Long.parseLong(panelActualizarEjemplar.textFieldISBNNuevo.getText());
                    numeroCajon = Integer.parseInt(panelActualizarEjemplar.textFieldNumCajonNuevo.getText());
                    numeroEstante = Integer.parseInt(panelActualizarEjemplar.textFieldNumEstanteNuevo.getText());
                    numeroPasillo = Integer.parseInt(panelActualizarEjemplar.textFieldNumPasilloNuevo.getText());
                    numeroSala = Integer.parseInt(panelActualizarEjemplar.textFieldNumSalaNuevo.getText());
                    disponible = panelActualizarEjemplar.checkBoxDisponibleNuevo.isSelected();
                    ejemplar.setIsbn(isbn);
                    ejemplar.setDisponible(disponible);
                    ejemplar.setNumeroCajon(numeroCajon);
                    ejemplar.setNumeroEstante(numeroEstante);
                    ejemplar.setNumeroPasillo(numeroPasillo);
                    ejemplar.setNumeroSala(numeroSala);
                } catch (NumberFormatException ex) {
                    JOptionPane.showMessageDialog(panelActualizarEjemplar, "Los datos ingresados deben ser numero enteros", "Error Datos", JOptionPane.ERROR_MESSAGE);
                }
                new VBiblioteca(ejemplar);
                gestorEjemplar.actualizarEjemplar(ejemplar.getIdEjemplar(), ejemplar);
                JOptionPane.showMessageDialog(panelActualizarEjemplar, "El nuevo ejemplar ha sido actualizado con exito", "Actualizar", JOptionPane.PLAIN_MESSAGE);
                limpiar();
            } catch (VBiblioteca ex) {
                JOptionPane.showMessageDialog(panelActualizarEjemplar, ex.getMessage(), "Error Datos", JOptionPane.INFORMATION_MESSAGE);
            }
        }
    }

    public void buscar() {
        int numeroCajon = -1;
        int numeroEstante = -1;
        int numeroPasillo = -1;
        int numeroSala = -1;
        try {
            numeroCajon = Integer.parseInt(panelActualizarEjemplar.textFieldNumCajonBuscar.getText());
            numeroEstante = Integer.parseInt(panelActualizarEjemplar.textFieldNumEstanteBuscar.getText());
            numeroPasillo = Integer.parseInt(panelActualizarEjemplar.textFieldNumPasilloBuscar.getText());
            numeroSala = Integer.parseInt(panelActualizarEjemplar.textFieldNumSalaBuscar.getText());
            ejemplar = gestorInformes.obtenerEjemplar(numeroSala, numeroPasillo, numeroEstante, numeroCajon);
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelActualizarEjemplar, "Los datos ingresados deben ser numero enteros", "Error Datos", JOptionPane.ERROR_MESSAGE);
        }
        if(ejemplar != null){
            panelActualizarEjemplar.textFieldISBNActual.setText(ejemplar.getIsbn()+"");
            panelActualizarEjemplar.textFieldISBNNuevo.setText(ejemplar.getIsbn()+"");
            panelActualizarEjemplar.textFieldNumCajonActual.setText(ejemplar.getNumeroCajon()+"");
            panelActualizarEjemplar.textFieldNumCajonNuevo.setText(ejemplar.getNumeroCajon()+"");
            panelActualizarEjemplar.textFieldNumEstanteActual.setText(ejemplar.getNumeroEstante()+"");
            panelActualizarEjemplar.textFieldNumEstanteNuevo.setText(ejemplar.getNumeroEstante()+"");
            panelActualizarEjemplar.textFieldNumPasilloActual.setText(ejemplar.getNumeroPasillo()+"");
            panelActualizarEjemplar.textFieldNumPasilloNuevo.setText(ejemplar.getNumeroPasillo()+"");
            panelActualizarEjemplar.textFieldNumSalaActual.setText(ejemplar.getNumeroSala()+"");
            panelActualizarEjemplar.textFieldNumSalaNuevo.setText(ejemplar.getNumeroSala()+"");
            panelActualizarEjemplar.checkBoxDisponibleActual.setSelected(ejemplar.isDisponible());
            panelActualizarEjemplar.checkBoxDisponibleNuevo.setSelected(ejemplar.isDisponible());
        }else{
            JOptionPane.showMessageDialog(panelActualizarEjemplar, "No existe un ejemplar con la referencia buscada", "Buscar", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    public void limpiar() {
        panelActualizarEjemplar.textFieldISBNActual.setText("");
        panelActualizarEjemplar.textFieldISBNNuevo.setText("");
        panelActualizarEjemplar.textFieldNumCajonActual.setText("");
        panelActualizarEjemplar.textFieldNumCajonBuscar.setText("");
        panelActualizarEjemplar.textFieldNumCajonNuevo.setText("");
        panelActualizarEjemplar.textFieldNumEstanteActual.setText("");
        panelActualizarEjemplar.textFieldNumEstanteBuscar.setText("");
        panelActualizarEjemplar.textFieldNumEstanteNuevo.setText("");
        panelActualizarEjemplar.textFieldNumPasilloActual.setText("");
        panelActualizarEjemplar.textFieldNumPasilloBuscar.setText("");
        panelActualizarEjemplar.textFieldNumPasilloNuevo.setText("");
        panelActualizarEjemplar.textFieldNumSalaActual.setText("");
        panelActualizarEjemplar.textFieldNumSalaBuscar.setText("");
        panelActualizarEjemplar.textFieldNumSalaNuevo.setText("");
        panelActualizarEjemplar.checkBoxDisponibleActual.setSelected(false);
        panelActualizarEjemplar.checkBoxDisponibleNuevo.setSelected(false);
    }

}
